Architectural designs for printed circuit boards (PCBs) of electronic devices connect components by a communication channel referred to as a bus. A bus may be considered a parallel bus when it consists of parallel bit lanes transmitting data in clock synchronous or asynchronous fashion. A bus is considered to be a serial bus when data is transmitted on a single data lane, either synchronously or asynchronously.
Computing devices and many electrical components make use of multiple buses, interconnected through bridges forming a communications fabric. Various devices, such as integrated circuits (ICs), and devices that include ICs are typically attached to a bus that is controlled by one or more programmable microcontrollers. A simple and commonly used bus is the inter-integrated circuit (I2C, “eye two see”) bus, also known as the “eye squared see” bus (I2C). The I2C bus physically consists of 2 active wires and a ground connection. The active wires are the serial data line (SDA) and the serial clock line (SCL), and are both bi-directional. Every device connected to the bus is assigned a unique address, regardless of whether it is a microcontroller (MCU), a liquid crystal display (LCD) driver, a memory device, or an application-specific integrated circuit (ASIC). Devices on an I2C bus can act as a receiver and/or transmitter, depending on their functionality, (an LCD driver is only a receiver). The I2C bus can support multi-masters, meaning that more than one IC capable of initiating a data transfer can be connected to the bus. An IC that that initiates a data transfer on the bus is considered the bus master for that transaction, according to the I2C protocol, and all other devices connected to the bus assume the role of bus slaves.
The I2C bus is generally used to connect slow-speed peripherals to embedded devices, motherboards, PCB cards, cell phones, and other electronic devices and components. The main objective behind the I2C bus was to establish a simple low pin count bus that can connect different ICs on a circuit board of industrial controls, televisions or radios. Later, I2C grew beyond the limits of TV and Radio and is now found in almost every computer motherboard and other embedded devices, such as industrial and slow, remote applications. I2C can also be used for communication between multiple circuit boards in equipments with or without using a shielded cable depending on the distance and speed of data transfer.
As the density of PCB circuitry continues to increase, minimizing the circuit density, required device pins, and the number of interfaces has become significantly important in computer and component design architecture. Methods to reduce the number of interfaces within the communication fabric of computing devices and components while allowing increase of circuit density and the number of interconnected devices continue to be explored.
As more devices are connected to a bus, the speed of the bus reduces due to the capacitive loading effect of the devices. The I2C bus is generally associated with transmission speeds up to 400 Kb/sec, with higher speed (up to 3.4 Mb/sec) possible with the appropriate configuration, and has a maximum capacitance of 400 picofarads (pF). Thus the I2C bus can be considered a slow, synchronous bus with a speed that is limited by the pull-up resistors needed for the master-slave arrangement and the physical bus capacitance. Devices such as field programmable gate arrays (FPGAs) and complex programmable logic devices (CPLDs) are capable of communication transmission speeds that are generally much higher than a typical I2C bus, for example, gigabit/sec transmission rates. This requires additional bus interface and protocol designs for PCBs and computing devices that employ FPGAs and CPLDs.